In contemporary computing systems, the development of markup language technology has resulted in a straightforward way for program authors to provide valuable information to users, and to receive requests and the like corresponding to user interaction with the displayed information. In general, the markup is processed to construct an element tree, and then the element tree is processed for rendering corresponding output data onto a display.
U.S. patent application Ser. Nos. 10/693,630 and 10/693,822 are among several patent applications (assigned to the assignee of the present invention) that, among other things, describe one such markup language that is generally arranged to simplify program authoring, namely XAML (eXtensible Application Markup Language). In general, a program author uses XAML instructions along with calls to application programming interfaces (APIs) to place objects in a scene graph data structure. For example, to build a user interface, a XAML-based program generally adds child visual objects to other visual objects to build up a hierarchical scene graph, writes instruction lists such as geometry data, image data and other data for output, and may specify transform, clipping and opacity properties on visual objects.
One of the capabilities of XAML described in the aforementioned patent applications is the ability to allow programs to specify animation parameters and/or media-related data, and then efficiently output corresponding display data that includes corresponding animations and/or media. A program author may describe a desired animation effect in terms of parameters, such as how much some displayed object property should change over time; for example, a rectangle's opacity property may be set to gradually fade from opaque to transparent, and then back, over some duration. In typical situations, the system manages the animation so that the program code need only specify the animation parameters initially, rather than requiring the program code itself to regularly redraw a changed image over time to accomplish the effect.
However, present development platforms only allow text to be animated on a coarse level. For example, a straightforward animation is able to make a given word spin in place, but making individual characters spin in place separately was not something that heretofore could be easily accomplished. This may be done by treating each character as a separate entity, however this was tedious and very limiting as to the scenarios in which animations and other text effects can be applied. As one major limitation, the author had to have prior knowledge of the exact text; for example, it was heretofore not possible to dynamically receive a news feed during runtime and animate each character of an article's title.
Moreover, previous systems have required an explicit specification of the origin of each animation. As a result, when each character is given a separate animation, the author of the animation was required to work out an at-rest position. This is extremely difficult to do, essentially limiting authors to use monospace fonts for per-character animations. This was heretofore also impossible when the when the exact text was not known beforehand, that is, when the data to be animated is substituted at run time.